package com.kk.demo.unsface.memory;

/**
 * 进行大页内存的测试
 * 
 * 1,可以通过
 * cat /proc/meminfo | grep Huge 查看是否支持大页内存
 * 2,
 * 
* 源文件名：LargeMemoryTest.java
* 文件版本：1.0.0
* 创建作者：liujun
* 创建日期：2016年11月29日
* 修改作者：liujun
* 修改日期：2016年11月29日
* 文件描述：TODO
* 版权所有：Copyright 2016 zjhz, Inc. All Rights Reserved.
*/
public class LargeMemoryTest {

    public static void main(String[] args) {

        System.out.println("input size:" + args[0]);

        int arraySize = Integer.MAX_VALUE / 16;

        if (null != args[0]) {
            arraySize = Integer.parseInt(args[0]);
        }

        long startTime = System.currentTimeMillis();

        int[] largeMemory = new int[arraySize];

        //生成数组数据
        for (int i = 0; i < largeMemory.length; i++) {
            largeMemory[i] = (int) (System.nanoTime() % Integer.MAX_VALUE);
        }

        long startTime2 = System.currentTimeMillis();

        int[] largeMemoryRsp = new int[arraySize];
        
        //进行运算
        for (int i = 0; i < largeMemory.length/2; i++) {
            for (int j = largeMemory.length-1; j > largeMemory.length/2; j--) {
                largeMemoryRsp[i] = largeMemoryRsp[i] * largeMemoryRsp[j];
            }
        }

        long end = System.currentTimeMillis();

        System.out.println(
                "put value need time:" + (startTime2 - startTime) / 1000f);
        System.out.println(
                "count value need time :" + (end - startTime2) / 1000f);
        System.out.println("all value need time:" + (end - startTime) / 1000f);

    }

}
